namespace JanusLibAing.EventsArg
{
    public class DataReadyEventArgs : ActionEventArgs
    {
        public enum EDataType
        {
            AnyData,
            ExpectedData
        }

        private int dataId = 0;
        private int dataLength = 0;
        private object data = null;
        //private EDataType dataType;

        /// <summary>
        /// Initializes a new instance of the <see cref="DataReadyEventArgs"/> class.
        /// </summary>
        /// <param name="dataId">The data id.</param>
        /// <param name="dataLength">Length of the data.</param>
        /// <param name="data">The data.</param>
        public DataReadyEventArgs(int dataId, int dataLength, object data)
        {
            this.dataId = dataId;
            this.dataLength = dataLength;
            this.data = data;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="DataReadyEventArgs"/> class.
        /// </summary>
        /// <param name="actionId">The action id.</param>
        /// <param name="dataId">The data id.</param>
        /// <param name="dataLength">Length of the data.</param>
        /// <param name="data">The data.</param>
        public DataReadyEventArgs(int actionId, int dataId, int dataLength, object data) 
            : base(actionId)
        {
            this.dataId = dataId;
            this.dataLength = dataLength;
            this.data = data;
        }

        /// <summary>
        /// Gets the length of the data.
        /// </summary>
        /// <value>The length of the data.</value>
        public int DataLength
        {
            get
            {
                return dataLength;
            }
        }

        /// <summary>
        /// Gets the data id.
        /// </summary>
        /// <value>The data id.</value>
        public int DataId
        {
            get
            {
                return dataId;
            }
        }

        /// <summary>
        /// Gets the data.
        /// </summary>
        /// <value>The data.</value>
        public object Data
        {
            get
            {
                return data;
            }
        }

        ///// <summary>
        ///// Gets or sets the type of the data.
        ///// </summary>
        ///// <value>The type of the data.</value>
        //public EDataType DataType
        //{
        //    get
        //    {
        //        return dataType;
        //    }

        //    set
        //    {
        //        dataType = value;
        //    }
        //}
    }
}

//ActionDefinitions